Друзья, подскажите пожалуйста. На сайте каждые 5 секунд через функцию SetInterval отправляются запросы к серверу, чтобы узнать, есть ли у пользователя новые уведомления. Эта часть работает отлично. Но возникает проблема, когда сайт открыт в нескольких вкладках. Тогда каждая страница отправляет каждые 5 секунд запрос. Растет нагрузка на сервер и все такое. Решил сделать так, чтобы одновременно уходил запрос только с одной вкладки, а если что-то меняется, то по ответу сервера вызывать функции во всех открытых вкладках. Сделал через куки: Устанавливаю куку checkAnnotations на 5 секунд, если она установлена то ajax запросы не запускаю, соответственно запрос на сервер уходит с той вкладки, в которой сработал setInterval ближе к окончанию действия куки.
Если сервер вернул какие-то результаты, сохраняю их в другие куки, которые также по setInterval проверяю в каждой вкладке, если есть изменения, то показываю их в каждой вкладке.
Но проблема возникает в Опере - кука сохраняется не на 5 секунд, а на 3часа и 5секунд. В Mozilla отлично, кука сохраняется на 5с
Вот так сохраняю:
function setcookie(name, value, expires, path, domain, secure)
{
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + (new Date(expires)) : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
var date = new Date();
expiresDate = date.setTime(date.getTime() + (5 * 1000));
setcookie('checkAnnotations', '1', expiresDate, "/");
Причем, если вывести в консоле код
var d = new Date();
d.setSeconds(d.getSeconds() + 5);
gmt = d.toGMTString();
console.log(gmt);
В Mozille и Opere выводит одинаковую дату, но кука в Опере при этом сохраняется на 3 часа позднее